Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/thread b/include/thread index f41ea29..1f1e4a2 100644 --- a/include/thread +++ b/include/thread 
@@ -185,10 +185,9 @@    } // this_thread   -class _LIBCPP_TYPE_VIS __thread_id; -template<> struct _LIBCPP_TYPE_VIS hash<__thread_id>; +template<> struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>;   -class _LIBCPP_TYPE_VIS __thread_id +class _LIBCPP_TYPE_VIS_ONLY __thread_id  {  // FIXME: pthread_t is a pointer on Darwin but a long on Linux.  // NULL is the no-thread value on Darwin. Someone needs to check @@ -231,11 +230,11 @@    friend __thread_id this_thread::get_id() _NOEXCEPT;  friend class _LIBCPP_TYPE_VIS thread; - friend struct _LIBCPP_TYPE_VIS hash<__thread_id>; + friend struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>;  };    template<> -struct _LIBCPP_TYPE_VIS hash<__thread_id> +struct _LIBCPP_TYPE_VIS_ONLY hash<__thread_id>  : public unary_function<__thread_id, size_t>  {  _LIBCPP_INLINE_VISIBILITY @@ -307,7 +306,7 @@    class _LIBCPP_HIDDEN __thread_struct_imp;   -class __thread_struct +class _LIBCPP_TYPE_VIS __thread_struct  {  __thread_struct_imp* __p_;   @@ -321,7 +320,7 @@  void __make_ready_at_thread_exit(__assoc_sub_state*);  };   -__thread_specific_ptr<__thread_struct>& __thread_local_data(); +_LIBCPP_FUNC_VIS __thread_specific_ptr<__thread_struct>& __thread_local_data();    #ifndef _LIBCPP_HAS_NO_VARIADICS   @@ -405,7 +404,7 @@  namespace this_thread  {   -void sleep_for(const chrono::nanoseconds& ns); +_LIBCPP_FUNC_VIS void sleep_for(const chrono::nanoseconds& ns);    template <class _Rep, class _Period>  void